Day 18 :
8.全域變數
全域變數可以在Solidity中的任何區域使用。
Example:
(1).this
表示引用此合約。
this.balance; /* 合約的餘額,一般在合約執行結束時,
會將合約裡的餘額再發送給合約所有人 */
this.; /* this.是外部的呼叫函數,非內部呼叫 */
(2).msg
msg.sender; //發送者的地址
msg.value; // 發送者給合約的以太幣,單位為wei
msg.data; // 呼叫資料
msg.gas; // 剩餘的gas
(3).tx
tx.origin; // 交易發送者的地址
舉例:帳戶A呼叫合約B,合約B則透過程式碼呼叫合約C,
在合約C中,tx.origin = 帳戶A,msg.sender = 合約B。
tx.gasprice; // 交易的gas價格
(4).block
block.number; // 當下區塊的號碼
block.diffculty; // 當下區塊的難度
block.blockhash(1); /* return bytes32,給定區塊編號的
hash值 */
block.gasLimit(); // 當下區塊的gasLimit
block.coinbase; // 當下區塊礦工的地址
block.timstamp; // 當下區塊的時間戳
9.列舉
列舉是Solidity中的自定義資料型態。
Example:
// 第一個元素預設為0,遞增1,元素 = {0,1,2}
enum State { Created, Locked, Inactive};
State public state; // 宣告列舉變數
state = State.Created; //賦值
// 轉為整數,createdState = 0
uint createdState = uint(State.Created);